// phalanx base_traits.hpp.cu header file

// Copyright (c) 2010 - 2011 Kohei Takahashi (Flast).
// Distributed under the MIT license. for more detail see COPYING.

#ifndef IG_PHALANX_TYPE_TRAITS_DETAIL_BASE_TRAITS_HPP_CU_ONCE_
#define IG_PHALANX_TYPE_TRAITS_DETAIL_BASE_TRAITS_HPP_CU_ONCE_

#include <phalanx/config.hpp.cu>

#include <cstddef>

namespace phalanx
{

namespace traits_detail
{

template < typename T,
           typename P  =       T *,
           typename cP = const T *,
           typename R  =       T &,
           typename cR = const T & >
struct base_traits
{
    typedef T  value_type;
    typedef P  pointer;
    typedef cP const_pointer;
    typedef R  reference;
    typedef cR const_reference;

    typedef ::std::size_t    size_type;
    typedef ::std::ptrdiff_t difference_type;
};

} // namespace traits_detail

} // namespace phalanx

#endif // IG_PHALANX_TYPE_TRAITS_DETAIL_BASE_TRAITS_HPP_CU_ONCE_

